﻿using System.ComponentModel;
using System.Windows.Data;
using Microsoft.Practices.Prism.Events;
using Microsoft.Practices.Prism.Regions;
using Tanmia.Basis.ViewInterface;
using Tanmia.Basis.ViewModel;
using Tanmia.Warehouse.Core;
using Tanmia.Warehouse.Domain;

namespace Tanmia.Warehouse.Presentation.Scenarios
{
    [ViewInfo("تحرير تصانيف المواد", "يمكن للتصانيف أن تشكل شجرة من التصانيف ومستويات التصنيف, تفيد تصانيف المواد بفرز المواد إلى مجموعة من الأصناف والأنواع المحددة مسبقاً.", Constants.RegionEditor, Views.ItemCategoryEditor)]
    public class ItemCategoryEditorViewModel : EditorViewModel<ItemCategory>
    {
        public ItemCategoryDomain ItemCategoryObj
        {
            get { return EntityObj as ItemCategoryDomain; }
        }

        public ICollectionView ParentItemCategories { get; protected set; }

        public ItemCategoryEditorViewModel(IShellView shellView, IRegionManager regionManager, IEventAggregator eventAggregator, IBusinessEntityNavigator<ItemCategory> entityNavigator, IMessageService messageService, ItemCategoryDomain itemCategoryObj)
            : base(shellView, regionManager, eventAggregator, entityNavigator, messageService, itemCategoryObj)
        {
            EntityName = "ItemCategory";
        }

        protected override void OnPostShow(NavigationContext navigationContext)
        {
            base.OnPostShow(navigationContext);

            FillParentItemCategories();
        }

        private void FillParentItemCategories()
        {
            ParentItemCategories = Entity == null || Entity.IsEmpty ?
                CollectionViewSource.GetDefaultView(ItemCategoryObj.GetsWithHead()) :
                CollectionViewSource.GetDefaultView(ItemCategoryObj.GetParentsWithHead(Entity));
            RaisePropertyChanged(() => ParentItemCategories);
        }
    }
}
